package com.mojo.tree;

import java.util.StringJoiner;

/**
 * 树存储结构-孩子兄弟表示法
 * 设置两个指针，如果结点有孩子结点，则指针分别指向孩子结点和孩子结点右边的兄弟结点
 *
 * @author <a href="mailto:sjj@jianzhimao.com">mojo</a>
 * copyright (C), 2013-2022, 广州九尾信息科技有限公司
 * @date 2022/9/2 9:11
 */
public class BrotherTree {
    //数据域，这里用整型
    int data;
    //第一个孩子结点
    BrotherTree firstChild;
    //孩子结点的右兄弟结点
    BrotherTree rightSib;

    public BrotherTree(int data, BrotherTree firstChild, BrotherTree rightSib) {
        this.data = data;
        this.firstChild = firstChild;
        this.rightSib = rightSib;
    }

    @Override
    public String toString() {
        return new StringJoiner(", ", BrotherTree.class.getSimpleName() + "[", "]")
                .add("data=" + data)
                .add("firstChild=" + firstChild)
                .add("rightSib=" + rightSib)
                .toString();
    }

    public static void main(String[] args) {
        BrotherTree b1 = new BrotherTree(1, null, null);
        BrotherTree b2 = new BrotherTree(2, null, b1);
        BrotherTree b3 = new BrotherTree(3, b2, null);
        System.out.println(b3);

    }
}
